#!/usr/bin/env bash

rvm_base_except="selector"

source "$rvm_scripts_path/base"
source "$rvm_scripts_path/functions/version"

__rvm_help_find()
{
  \typeset _full_name
  \typeset -a _full_paths

  _full_name=""
  _full_paths=()
  _matched=""

  case "$1" in
    (*/*) return 1 ;;
  esac

  # start with shortest, build path and prepend it to beginning
  while (( $# > 0 ))
  do
    _full_name="${_full_name:-}${1:-}"
    _full_paths=( "${_full_name}.md" "${_full_paths[@]}" )
    _full_name="${_full_name:-}/"
    shift
  done

  # check longest paths first
  for _full_name in "${_full_paths[@]}"
  do
    if
      [[ -n "${_full_name}" && -s "${rvm_help_path}/${_full_name}" ]]
    then
      echo "${rvm_help_path}/${_full_name}"
      return 0
    elif
      [[ -n "${_full_name}" && -s "${rvm_docs_path}/${_full_name}" ]]
    then
      echo "${rvm_docs_path}/${_full_name}"
      return 0
    fi
  done
  return 1
}

__rvm_help()
{
  \typeset _matched

  __rvm_print_headline

  if
    _matched="$(__rvm_help_find "$@")"
  then
    __rvm_pager_or_cat_v "${_matched}"
  else
    [[ -z "$1" ]] || rvm_error "Documentation for 'rvm $*' not found"

    __rvm_pager_or_cat_v "${rvm_path:-$HOME/.rvm}/help/index.txt"
  fi

  rvm_log "
For additional documentation please visit $(__rvm_version_website)
"
}
__rvm_help "$@"
